/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compilationunit;

/**
 *
 * @author Esther SM
 */
public class Tercetos {

    int cont_temp;
    int cont_etiq;
    String etiqueta;
    String temporal;
    
    public Tercetos (){
        cont_temp=0;
        cont_etiq=0;
    }

    //metodo que te devuelve un nuevo temporal
    public String Nuevo_Temporal (){
        cont_temp++;
        temporal = "temp"+cont_temp;
        return temporal;    
    }
    
    //metodo que te devuelve una nueva etiqueta
    public String Nueva_Etiqueta(){
        cont_etiq++;
        etiqueta = "temp"+cont_etiq;
        return etiqueta;
    }
               
  
    //para las sumas (res=arg1+arg2) o comparaciones (res=arg1<arg2) 
    public String operacionBinaria(String operador, String arg1,String arg2, String res){
        return operador +"," +arg1 +","+ arg2+ ","+res+"\n";
    }
         
    //para las negaciones (res=!arg1)
    public String operacionUnaria(String operador, String arg1, String res){
        return operador + "," + arg1 + "," + res + "\n";
    }
                
    
    
    //para los saltos incondicionales
    public String saltoIncondicional(String etiqueta){
        return "GOTO "+etiqueta+"\n";
    }
    
    public String saltoCondicional(String dir, String etiqueta){
        return "IF,"+dir+",,"+etiqueta+"\n";
    }
    
    //para los tercetos de los return
    public String retorno(String nombre){
        return "RETURN,,,"+nombre+"\n";
    }
    
    //para los tercetos de la forma (etiqueta,':')
    public String crear_etiqueta (String etiqueta){
        return etiqueta + ':';
    }
    
    //para las llamadas a metodos
    public String[] llamada_metodo(String nombre, int numparametros,String parametros[]){
                
                String resultado[] = new String[numparametros + 1];
		int i = 0;
                for (; i<numparametros; i++){
                    //va creando un "PARAM" por cada uno de los parametros de la funcion
                    resultado[i] = "PARAM,"+parametros[i]+",,\n";
		}
                resultado[i] = "CALL,"+nombre+","+numparametros+",\n";
                return resultado;
    }
//    public String asignacion(String op1, int op2){
//
//    return "ASIGNN,"+op1+","+op2+",\n";
//    }
//    
//    public String asignacion(String op1, String op2){
//
//    return "ASIGN,"+op1+","+op2+",\n";
//    }
       
    
    
    
    
    
   
    
}

